home *** CD-ROM | disk | FTP | other *** search
- /* -*- Mode: C++; tab-width: 2; indent-tabs-mode: nil; c-basic-offset: 2 -*- */
- /* ***** BEGIN LICENSE BLOCK *****
- * Version: MPL 1.1/GPL 2.0/LGPL 2.1
- *
- * The contents of this file are subject to the Mozilla Public License Version
- * 1.1 (the "License"); you may not use this file except in compliance with
- * the License. You may obtain a copy of the License at
- * http://www.mozilla.org/MPL/
- *
- * Software distributed under the License is distributed on an "AS IS" basis,
- * WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
- * for the specific language governing rights and limitations under the
- * License.
- *
- * The Original Code is mozilla.org code.
- *
- * The Initial Developer of the Original Code is
- * Netscape Communications Corporation.
- * Portions created by the Initial Developer are Copyright (C) 2001
- * the Initial Developer. All Rights Reserved.
- *
- * Contributor(s):
- *
- * Alternatively, the contents of this file may be used under the terms of
- * either the GNU General Public License Version 2 or later (the "GPL"), or
- * the GNU Lesser General Public License Version 2.1 or later (the "LGPL"),
- * in which case the provisions of the GPL or the LGPL are applicable instead
- * of those above. If you wish to allow use of your version of this file only
- * under the terms of either the GPL or the LGPL, and not to allow others to
- * use your version of this file under the terms of the MPL, indicate your
- * decision by deleting the provisions above and replace them with the notice
- * and other provisions required by the GPL or the LGPL. If you do not delete
- * the provisions above, a recipient may use your version of this file under
- * the terms of any one of the MPL, the GPL or the LGPL.
- *
- * ***** END LICENSE BLOCK ***** */
-
- #include "nsISupports.idl"
-
- interface nsIDOMDocument;
- interface nsIDOMElement;
- interface nsISOAPEncoding;
- interface nsISOAPHeaderBlock;
- interface nsISOAPParameter;
- interface nsIVariant;
-
- /**
- * This interface controls all SOAP messages. It permits easy
- * construction of a message, typically through encoding of
- * parameters and certain properties settable on this interface
- * or through deserialization of a transport stream. It
- * permits easy processing of a message typically through
- * decoding of parameters and certain properties available
- * on this interface. It also encapsulates protocol information
- * interpreted by the transport.
- */
-
- [scriptable, uuid(3970815e-1dd2-11b2-a475-db4dac6826f1)]
- interface nsISOAPMessage : nsISupports {
-
- const unsigned short VERSION_1_1 = 0;
- const unsigned short VERSION_1_2 = 1;
- const unsigned short VERSION_UNKNOWN = 0xFFFF;
-
- /**
- * The document which captures the message, if any. A simple
- * sending application passes parameters to the method
- * encodeSOAPParameters, which calls SOAP encoders
- * to construct this document along with all contained elements.
- *
- * But an application may create and set the message directly
- * instead of invoking encodeSOAPParameters to use encoders
- * or access and manipulate the message after it has been
- * constructed by encodeSOAPParameters. If the message has
- * not been set, invoking a call will fail. A message reciever
- * may also use this accessor to get the document to avoid using
- * decoders.
- */
- attribute nsIDOMDocument message;
-
- /**
- * A convenience attribute to obtain the DOM element representing the
- * SOAP envelope from the document. DOM methods may be used to
- * access, add, or modify attributes of the envelope.
- *
- * If the message attribute is null or is not a document containing
- * a root soap envelope element, then this will be null.
- */
- readonly attribute nsIDOMElement envelope;
-
- /**
- * A convenience attribute to obtain the SOAP version number, if
- * it is known, from the envelope.
- *
- * If the message attribute is null or is not a document containing
- * a root soap envelope element, then this will be VERSION_UNKNOWN.
- */
- readonly attribute unsigned short version;
-
- /**
- * A convenience attribute to obtain the DOM element representing the
- * SOAP header from the envelope. DOM methods may be used to
- * access, add, or modify attributes or elements of the header.
- *
- * If the envelope attribute is null or does not contain a SOAP header
- * element type, then this will be null.
- */
- readonly attribute nsIDOMElement header;
-
- /**
- * A convenience attribute to obtain the DOM element representing the
- * SOAP body from the envelope. DOM methods may be used to
- * access, add, or modify attributes or elements of the body.
- *
- * If the envelope attribute is null or does not contain a SOAP body
- * element type, then this will be null.
- */
- readonly attribute nsIDOMElement body;
-
- /**
- * The name of the method being invoked. The methodName is set
- * during encoding as the tagname of the single child of body
- * of RPC-style messages. When there is no encoded message
- * this will be null. The value of this attribute for
- * document-style messages may be non-null but should be
- * ignored. It is up to the application to know whether the
- * message is RPC-style or document style because the SOAP
- * specification makes it difficult to tell which way a
- * message was encoded.
- */
- readonly attribute AString methodName;
-
- /**
- * The target object on which the method is being invoked. This URI
- * is set during encoding as the namespace to qualify the tagname
- * of the single child of body of RPC-style messages. When there
- * is no encoded message, this will be null. The value of this
- * attribute for document-style messages may be non-null but should
- * be ignored. It is up to the application to know whether the
- * message is RPC-style or document style because the SOAP
- * specification makes it difficult to tell which way a
- * message was encoded.
- */
- readonly attribute AString targetObjectURI;
-
- /**
- * Encodes the specified parameters into this message, if
- * this message type supports it.
- *
- * @param aMethodName The name of the method being invoked
- * for rpc-style messages. For document-style messages,
- * this must be null.
- *
- * @param aTargetObjectURI The name of the target object
- * for rpc-style messages. For document-style messages,
- * this must be null.
- *
- * @param aHeaderBlockCount Number of header blocks in array to be
- * encoded. Must be 0 if header block array is null.
- *
- * @param aHeaderBlocks Array of header blocks to be encoded, which
- * may be null if there are no header blocks.
- *
- * @param aParameterCount Number of parameters in array
- * to be encoded. Must be 0 if parameter array is null.
- *
- * @param aParameters An array of parameters to be
- * encoded, which may null if there are no parameters.
- */
- void encode(in unsigned short aVersion,
- in AString aMethodName, in AString aTargetObjectURI,
- in unsigned long aHeaderBlockCount,
- [array,
- size_is(aHeaderBlockCount)] in nsISOAPHeaderBlock
- aHeaderBlocks, in unsigned long aParameterCount,[array,
- size_is
- (aParameterCount)]
- in nsISOAPParameter aParameters);
-
- /**
- * Gathers the header blocks of a message so that they can be
- * accessed by a recipient.
- *
- * @param aCount Integer to receive the length of the list
- * of header blocks.
- *
- * @return Array of header blocks found in the message.
- */
- void getHeaderBlocks(out unsigned long aCount,
- [array, size_is(aCount),
- retval] out nsISOAPHeaderBlock aHeaderBlocks);
-
- /**
- * Gathers the parameters of a message so that they can be
- * accessed by a recipient.
- *
- * @param aDocumentStyle If true, then the parameters
- * are looked for treating the message as a document
- * style message, otherwise it treated as an RPC-style
- * message.
- *
- * @param aCount Integer to receive the length of the list
- * of parameters.
- *
- * @return Array of parameters found in the message.
- */
- void getParameters(in boolean aDocumentStyle,
- out unsigned long aCount,
- [array, size_is(aCount),
- retval] out nsISOAPParameter aParameters);
-
- /**
- * The primary encoding of the message, which is established
- * at the envelope and used unless overridden. By default,
- * this is the SOAP encoding, which may be locally modified
- * or used to obtain alternative encodings, which may be
- * locally modified, but it may be set to an encoding that
- * is shared, or it may be set to null, in which case all
- * non-literal header blocks and parameters must specify an
- * encoding.
- */
- attribute nsISOAPEncoding encoding;
-
- /**
- * An optional URI that can be used to add a SOAPAction HTTP
- * header field. If this attribute is NULL (the default case),
- * no SOAPAction header will be added.
- */
- attribute AString actionURI;
- };
-